#ifndef __Pro_Drive_H
#define __Pro_Drive_H
#include "sys.h"
#include "User.h"
#include "stm32f10x.h"
#include "usart.h"
#include "led.h"
#include "ADC.h"
#include "timer.h"
#include "can.h"
#include "oled.h"
#include "delay.h"
#include "stmflash.h"
#include "Motion.h"
#include "wdg.h"
#include "zfy.h"
void Pro_Drive_Init(void);															  // 初始化函数
void Config_Hardware(void);															  // 硬件输入输出口配置函数
void Init_CAN_RX(void);																  // 初始化CAN接收节点函数
void KOP_Cycle(void);																  // 主循环函数
void DWIN_Drive(void);																  //
void Date_Set_Dwin(u8 year, u8 mon, u8 day, u8 Hour, u8 Min, u8 Sec);				  //
void Set_Postion(u8 mode, u16 var_SP, u16 x, u16 y);								  //
void Draw_Rectang(u16 Vp, u16 x1, u16 y1, u16 x2, u16 y2, u16 color);				  //
void Draw_Line_to_curve(u16 Vp, u16 *x, u16 *y, u8 point, u16 color);				  //
void Draw_Curve(u8 channel, u16 input);												  //
void Pic_Copy(u16 Vp, u8 Num_Page, u16 x1, u16 y1, u16 x2, u16 y2, u16 x_L, u16 y_L); //
void Draw_circle(u16 Vp, u16 x, u16 y, u16 rad, u16 start, u16 end, u16 color);		  //
void Draw_Filling(u16 Vp, u16 x, u16 y, u16 color);									  //
void Touch_Setting(u8 add, u8 Value);												  //
/*-------------Stand Mode---------------*/											  //
u8 R_Trig(u8 in, u8 *p);															  // 上升沿函数
u8 F_Trig(u8 in, u8 *p);															  // 下降沿函数
u8 TON(u8 in, u16 Par_set, u16 *p);													  // Par_Cut参数单位 10ms
u8 TOF(u8 in, u16 Par_set, u16 *p);													  // Par_Cut参数单位 10ms
typedef struct
{
	u16 Battery_V;	 // 系统电压，单位 0.1v
	u16 EEPROM[110]; // 掉电保存变量数组,EEPROM方式
	u8 Active;		 // 软件是否注册
	struct
	{
		u8 Type; // 0:DI 1:PI
		u8 DI;
		u16 PI;
	} PIN_4_10, PIN_5_11, PIN_12, PIN_13;
	//
	struct
	{
		u8 Type;	// 0:0-5V 1:4-20mA 2:DI+
		u8 DI, Err; // Err 1:电流信号接电压信号短路
		u16 AI;
	} PIN_18, PIN_19, PIN_20, PIN_21;
	//
	struct
	{
		u8 Type;		// 0:DO 1:PWM 2:DI-
		u8 DI, DO, Err; // Err 1:未接负载 2:短路 3:电流大
		u16 PWM;
		u16 FB;
	} PIN_7, PIN_8, PIN_14, PIN_15, PIN_16, PIN_23, PIN_22;
	struct
	{
		u16 Par_PI;
	} PWM_7_8_14_15_Set_PI, PWM_16_22_23_24_Set_PI;
	//
	struct
	{
		u8 Type;		// 0:DO 1:PWM 2:DI+ 3:AI
		u8 DI, DO, Err; // Err 2:短路· 3:电流大
		u16 AI;
		u16 PWM;
		u16 FB;
	} PIN_24;
	//
	struct
	{
		u8 Enable;
		u32 BaudRate;
	} RS232, CAN;
} Drive;
extern Drive ECU;

typedef struct
{
	u8 Bright_Adj;	  // 显示屏亮度调节（0-64，设置成100为自动调节亮度）
	u8 Buzzer;		  // 蜂鸣器控制 1:发出声音
	u16 Var_Map[200]; // 与前面板关联变量映射
	u8 Page_Go;		  // 翻页控制
	u8 Get_time[3];	  // 获取当前时间 时-分-秒
	u8 Get_date[3];	  // 获取当前时间 年-月-日
} Drive1;
extern Drive1 Hmi;
typedef struct
{
	struct
	{
		u8 DI; // 0:DI 1:PI
		u8 PI;
	} Type1;
	//
	struct
	{
		u8 AI_5V; // 0:0-5V 1:4-20mA 2:DI+
		u8 AI_mA;
		u8 DI;
	} Type2;
	//
	struct
	{
		u8 DO; // Type 0:DO 1:PWM 2:DI-
		u8 PWM;
		u8 DI_;
	} Type3;
	//
	struct
	{
		u8 DO; // Type 0:DO 1:PWM 2:DI-
		u8 PWM;
		u8 DI;
		u8 AI;
	} Type4;
} Type_set;
extern Type_set Type;
#endif
